package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.PO.DeviceCloudIntercomInfoPO;
import com.itlong.cloud.POJO.PO.DeviceEntranceInfoPO;
import com.itlong.cloud.POJO.PO.DevicePadInfoPO;
import com.itlong.cloud.POJO.VO.operate.OperateDeviceInfoVO;
import com.itlong.cloud.POJO.VO.operate.OperateProjectInfoVO;
import com.itlong.cloud.POJO.VO.operate.OperateUpdateInfoVO;
import com.itlong.cloud.POJO.VO.property.CloudElevatorByProjectIdVO;
import com.itlong.cloud.POJO.VO.property.PropertyProjectUnitInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 * 运营-固件升级-设备升级操作数据接口。
 * <desc/>
 *
 * @createDate 2018/08/27.
 */
@Mapper
@Repository
public interface IOperateHardwareDao {

    /**
     * <desc>
     * 分页获取云对讲设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/27
     */
    List<OperateDeviceInfoVO> getDeviceIntercomInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 云对讲设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/27
     */
    Integer getDeviceIntercomInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 分页获取电梯设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/27
     */
    List<OperateDeviceInfoVO> getDeviceElevatorInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 电梯设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/27
     */
    Integer getDeviceElevatorInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 分页获取门禁设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/03/05
     */
    List<OperateDeviceInfoVO> getDeviceEntranceInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 分页获取群控器设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/03/27
     */
    List<OperateDeviceInfoVO> getDeviceClusterInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 群控器设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/03/05
     */
    Integer getDeviceEntranceInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 分页获取联动器设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/05/20
     */
    List<OperateDeviceInfoVO> getDeviceWippenInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 联动器设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/05/20
     */
    Integer getDeviceWippenInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 分页获取一体式人脸识别门禁设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2020/05/25
     */
    List<OperateDeviceInfoVO> getDeviceUnibodyFaceInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 一体式人脸识别门禁设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2020/05/25
     */
    Integer getDeviceUnibodyFaceInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 分页获取人脸识别仪设备信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/12/16
     */
    List<OperateDeviceInfoVO> getDevicePadInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 人脸识别仪设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/12/16
     */
    Integer getDevicePadInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 群控器设备信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2019/03/27
     */
    Integer getDevicClusterInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 根据项目编号获取设备更新时间
     * <desc/>
     *
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018-09-04
     */
    String getUpgradeTimeByProjectId(@Param("projectId") String projectId);

    /**
     * <desc>
     * 分页获取项目信息。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/28
     */
    List<OperateProjectInfoVO> getProjectInfoPage(Map<String, Object> params);

    /**
     * <desc>
     * 项目信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/28
     */
    Integer getProjectInfoCount(Map<String, Object> params);

    /**
     * <desc>
     * 获取项目楼栋
     * <desc/>
     *
     * @param projectId 项目编号
     * @return
     * @author Qiang.S
     * @createDate 2018/08/28
     */
    List<PropertyProjectUnitInfoVO> getBuildInfo(@Param("projectId") String projectId);

    /**
     * <desc>
     * 获取项目单元
     * <desc/>
     *
     * @param projectId 项目编号
     * @param buildId   楼栋编号
     * @return
     * @author Qiang.S
     * @createDate 2018/08/28
     */
    List<PropertyProjectUnitInfoVO> getUnitInfo(@Param("projectId") String projectId, @Param("buildId") String buildId);

    /**
     * <desc>
     * 获取项目单元
     * <desc/>
     *
     * @param projectId   项目编号
     * @param upgradeTime 项目设备升级时间
     * @return
     * @author Qiang.S
     * @createDate 2018/08/28
     */
    Integer setupUpdateTime(@Param("projectId") String projectId, @Param("upgradeTime") String upgradeTime);

    /**
     * <desc>
     * 通过项目deviceUnique获取所有云对讲设备
     * </desc>
     *
     * @param deviceUnique 设备全局唯一序列号
     * @return
     * @author Qiang.S
     * @createDate 2018/08/29
     */
    List<DeviceCloudIntercomInfoPO> getCloudIntercomsByDeviceUnique(@Param("deviceUnique") String[] deviceUnique);

    /**
     * <desc>
     * 通过项目deviceUnique获取所有人脸识别仪设备
     * </desc>
     *
     * @param deviceUnique 设备全局唯一序列号
     * @return
     * @author Qiang.S
     * @createDate 2019/12/16
     */
    List<DevicePadInfoPO> getCloudPadByDeviceUnique(@Param("deviceUnique") String[] deviceUnique);

    /**
     * <desc>
     * 根据deviceUnique获取所有云电梯设备
     * </desc>
     *
     * @param deviceUnique 设备全局唯一序列号
     * @return
     * @author Qiang.S
     * @createDate 2018/08/29
     */
    List<CloudElevatorByProjectIdVO> getCloudElevatorByDeviceUnique(@Param("deviceUnique") String[] deviceUnique);

    /**
     * <desc>
     * 通过sn获取所有云门禁设备
     * </desc>
     *
     * @param sn sn
     * @return
     * @author Qiang.S
     * @createDate 2019/03/05
     */
    List<DeviceEntranceInfoPO> getCloudEntranceBySn(@Param("sn") String[] sn);

    /**
     * <desc>
     * 通过sn获取所有联动器设备
     * </desc>
     *
     * @param sn sn
     * @return
     * @author Qiang.S
     * @createDate 2019/05/20
     */
    List<DeviceEntranceInfoPO> getCloudWippenBySn(@Param("sn") String[] sn);

    /**
     * <desc>
     * 通过sn获取所有一体式人脸识别门禁设备
     * </desc>
     *
     * @param sn sn
     * @return
     * @author Qiang.S
     * @createDate 2019/05/20
     */
    List<DeviceEntranceInfoPO> getCloudUnibodyFaceBySn(@Param("sn") String[] sn);

    /**
     * <desc>
     * 根据deviceUnique获取所有群控器设备
     * </desc>
     *
     * @param deviceUnique 设备全局唯一序列号
     * @return
     * @author Qiang.S
     * @createDate 2019/03/27
     */
    List<CloudElevatorByProjectIdVO> getCloudClusterByDeviceUnique(@Param("deviceUnique") String[] deviceUnique);

    /**
     * <desc>
     * 通过设备类型查询安装包
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-12 10:17
     * @Param
     * @Return
     * @Exception
     */
    List<OperateUpdateInfoVO> getPackageNameByProductType(@Param("productTypes") String[] productTypes,@Param("deviceType") String deviceType);


    /**
     * <desc>
     * 通过设备唯一标识符获取云对讲详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:39
     * @Param
     * @Return
     * @Exception
     */
    OperateDeviceInfoVO getTalkeDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 通过设备唯一标识符获取云电梯详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:39
     * @Param
     * @Return
     * @Exception
     */

    OperateDeviceInfoVO getElevatorDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 通过设备唯一标识符获取云门禁详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:39
     * @Param
     * @Return
     * @Exception
     */
    OperateDeviceInfoVO getEntranceDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 通过设备唯一标识符获取群控器详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:40
     * @Param
     * @Return
     * @Exception
     */
    OperateDeviceInfoVO getClusterDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 通过设备唯一标识符获取联动器详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:40
     * @Param
     * @Return
     * @Exception
     */
    OperateDeviceInfoVO getWippenDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 通过设备唯一标识符获取一体式门禁详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:40
     * @Param
     * @Return
     * @Exception
     */
    OperateDeviceInfoVO getUnibodyDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 通过设备唯一标识符获取平板详细信息接口
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-11-16 14:40
     * @Param deviceUnique 设备唯一标识
     * @Return
     * @Exception
     */
    OperateDeviceInfoVO getPadDetailByDeviceUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     * 查询云门禁是否绑定地址
     * </desc>
     *
     * @Author chengshican
     * @Date 2020-12-03 13:45
     * @Param deviceUnique 设备唯一标识
     * @Return
     * @Exception
     */
    Integer getEntranceDeviceAddressByUnique(@Param("deviceUnique") String deviceUnique);


    /**
     * <desc>
     *  查询云电梯是否绑定地址
     * </desc>
     * @Author chengshican
     * @Date 2020-12-03 13:46
     * @Param
     * @Return
     * @Exception
     */
    Integer getElevatorDeviceAddressByUnique(@Param("deviceUnique") String deviceUnique);

    
    
    
    /**
    *<desc>
    * 获取受限设备云电梯
    *</desc>
    *
    * @Author  chengshican
    * @Date   2020-12-07 10:14
    * @Param  
    * @Return      
    * @Exception   
    * 
    */

   List<String> getSpElevatorList();


   /**
   *<desc>
   * 受限设备云群控
   *</desc>
   *
   * @Author  chengshican
   * @Date   2020-12-07 10:16
   * @Param
   * @Return
   * @Exception
   *
   */

    List<String> getSpControllerList();


   /**
   *<desc>
   * @Description
   *</desc>
   *
   * @Author  chengshican
   * @Date   2020-12-07 10:17
   * @Param
   * @Return
   * @Exception
   *
   */
   List<String> getSpPadList();


    /**
    *<desc>
    * 受限设备云门禁
    *</desc>
    *
    * @Author  chengshican
    * @Date   2020-12-07 10:18
    * @Param
    * @Return
    * @Exception
    *
    */
    List<String> getSpEntranceList();

/*
    *//**
    *<desc>
    *分页获取一体式云门禁的信息
    *</desc>
    *
    * @Author  chengshican
    * @Date   2021-02-21 15:19
    * @Param
    * @Return      
    * @Exception   
    * 
    *//*
    List<OperateDeviceInfoVO> getDeviceUnibodyEntranceInfoPage(Map<String, Object> params);



    Integer getDeviceUnibodyEntranceInfoCount(Map<String, Object> params);*/
}
